O case expressão é a pedra angular do fluxo de controle do Elixir. Diferentemente das instruções switch imperativas, case é uma expressão funcional que retorna o resultado da ramificação correspondente, permitindo que desenvolvedores desconstruam tipos de dados complexos como mapas e tuplas instantaneamente, ao mesmo tempo que impõem lógica exaustiva.
1. Correspondência de Padrões e Ligação
O case expressão permite testar um valor contra um conjunto de padrões. Ela executa o código associado ao primeiro padrão que corresponder e retorna o valor desse código. Você pode ligar variáveis dentro da correspondência para uso imediato na lógica da ramificação.
%{estado: algum_estado} = pessoa ->
IO.puts "#{pessoa.nome} mora em #{algum_estado}"
fim
2. Fluxo Lógico Visual
3. Cláusulas de Guarda e Exaustividade
Usando o when palavra-chave, você pode aprimorar correspondências estruturais com lógica de predicado (por exemplo, is_number(idade) e idade >= 21). O Elixir exige uma correspondência para cada entrada potencial; se nenhum padrão corresponder, um CaseClauseError é levantado.